<!doctype html> 
<html> 
 
<body>
 说明   <span style="color:red">(四级的部分暂不考虑)</span><br>
1：系统采用maven构建，采取的技术为EJB3.0+Eclipse JPA,使用的服务器为glassfish(支持EJB3.0)，使用mysql数据库 <br>
2：json的返回结果一律为<br>
      (isSuccess,'')    //是否成功<br>
      (defaultValue,'') //默认值,当请求的是List的时候，为JsonArray，为单个的时候，为JsonObject，为bool的时候，值为true或者false，其中对于的名称与数据库一致<br>
      (message,'')      //当请求失败的时候,返回错误信息<br>
<br>
<br>
说明，我们的JsonArray由于一般的返回量都比较大，故做了特殊的处理。<br>
<br>
<br>
原来为：<br>
{<br>
{name:1 ,age:2}<br>
{name:1 ,age:2}<br>
{name:1 ,age:2}<br>
{name:1 ,age:2}<br>
{name:1 ,age:2}<br>
{name:1 ,age:2}<br>
}<br>
改造为{<br>
{name,age}<br>
{1,2}<br>
{1,2}<br>
{1,2}<br>
{1,2}<br>
{1,2}<br>
{1,2}<br>
}<br>
节省流量。具体算法可参加代码中。<br>
<br>
3：svn地址为https://5iwords.googlecode.com/svn/5iwords 密码 dS7xc9ea4sA9<br>
4：JNDI name为 iwordsJNDIName<br>
<br>
5：所有传递的参数和数据库中字段名称一致。<br>
6：为了防止恶意读写，我们选择的处理方式是 (目前还在开发中)<br>
HTTP+token方式。<br>
例如http URL<br>

1：获取请求URL      www.iwords.com/user?action=addUser&username=12&password=123<br>

2：对URL进行MD5（双方约定一个密钥，在加密的时候拼接进去加密），产生的32位取前16位，拼接URL<br>
www.iwords.com/user?action=addUser&username=12&password=123&k=2cc5344c7fb3878d<br>

服务器端会对这一个过程重新来一次，如果最后生成的token和k参数一致，则认为合法。否则认为非法。<br>
当然，这里可能会觉得有两个问题。<br>
1：URL增大，大约会增加30bytes。其实没多少。<br>
2：加密过程的性能。经过试验，一个中等长度的URL，1s可以MD5约12.5w次以上。<br>
<br>
<br>
<br>
参数和数据库的命名一致,防止乱码对结果进行UTF-8编码<br>
<br>
<br>
一 用户<br>
<br>
其中传递的参数命名与数据库一致<br>
<br>
登陆<br>
http://i.5iwords.com/api/user?action=login&username=&password=<br>
注册<br>
http://i.5iwords.com/api/user?action=register  参考AndroidClient里面的注册<br>
查找<br>
http://i.5iwords.com/api/user?action=find<br>
判断nickname  <br>
http://i.5iwords.com/api/user?action=checkun&nickname=<br>
 <br>
<br>
<br>
二 课本<br>
<br>
列表<br>
http://i.5iwords.com/api/sysLib?action=list<br>
单个课本<br>
http://i.5iwords.com/api/syslib?action=single&libid=<br>
<br>
<br>
三 单词<br>
根据libid查询列表<br>
http://i.5iwords.com/api/word?action=list&libid=?<br>
根据wordid查询单词<br>
http://i.5iwords.com/api/word?action=single&wordid=?<br>
<br>
<br>
四 学习状态<br>
选择课本<br>
http://i.5iwords.com/api/learningStatus?action=movesyslib&userid=?&libid=?<br>
获取学习过的课本单词列表<br>
http://i.5iwords.com/api/learningStatus?action=list&userid=?&libid=?<br>
修改用户课本中词的状态<br>
http://i.5iwords.com/api/learningStatus?action=changestatus&userid=?&libid=?&wordid=?&familiarity=?<br>
<br>
五 收费词汇<br>
单词列表<br>
http://i.5iwords.com/api/advancedWord?action=list&libid=?<br>
单词<br>
http://i.5iwords.com/api/advancedWord?action=single&wordid=? <br>
<br>
例如单词A<br>
A r-1<br>
A l-1<br>
A c-1<br>
A t-1<br>
标识 单词A 分别在Reading Co....  Listening Com....  Cloze  Translation 中的频率。客户端需要进行手动汇总<br>
<br>
六 单词题目<br>
题目列表 <br>
http://i.5iwords.com/api/examItem?action=list&wordid=?  <br>
说明：题目的地址在Apache的目录下<br>
http://i.5iwords.com/ite<br>
ms/examid/itemtype/itemid 为题目的文本<br>
<br>
七 收费单词匹配句子<br>
匹配句子<br>
http://i.5iwords.com/api/sentences?action=hot&wordid=?  <br>
所有句子<br>
http://i.5iwords.com/api/sentences?action=list&wordid=?  <br>
</body>
</html>